# 导入 Django 提供的页面渲染函数 render 和 重定向函数 redirect
from django.shortcuts import render, redirect

# 从当前应用的 models.py 中导入 Message 模型类（对应留言数据）
from .models import Message

# 定义视图函数：用于显示留言墙页面 + 处理用户提交的留言表单
def message_board(request):
    # 如果用户是通过 POST 方法提交表单（说明是“提交留言”动作）
    if request.method == 'POST':
        # 从提交的表单数据中提取昵称和留言内容
        nickname = request.POST.get('nickname')  # 表单中 input 的 name="nickname"
        content = request.POST.get('content')    # 表单中 textarea 的 name="content"

        # 如果昵称和内容都不为空（简单的数据校验）
        if nickname and content:
            # 创建一条新的留言记录，自动保存到数据库中
            Message.objects.create(nickname=nickname, content=content)

            # 提交完成后重定向回留言页面，防止用户刷新导致重复提交（PRG 模式）
            return redirect('message_board')  # 这个名字对应 urls.py 中定义的 name='message_board'

    # 如果是 GET 请求，或者提交无效，就从数据库中取出所有留言记录
    messages = Message.objects.all()

    # 渲染 HTML 页面模板，将所有留言传递给模板变量 messages，用于页面展示
    return render(request, 'polls/message.html', {'messages': messages})

# 视图函数：处理留言的删除操作
def delete_message(request, pk):
    # 根据主键 pk 获取留言对象
    message = Message.objects.get(pk=pk)

    # 删除该留言
    message.delete()

    # 删除后跳转回留言板页面
    return redirect('message_board')

#视图函数：处理留言的修改
def edit_message(request, pk):
    #根据主键pk获取要修改的留言对象
    message = Message.objects.get(pk=pk)

    #如果请求方法是POST， 说明用户点击了修改按钮
    if request.method == 'POST':
        #获取修改之后的昵称和内容
        nickname = request.POST.get('nickname')
        content = request.POST.get('content')

        #判断都不为空
        if nickname and content:
            #更新留言对象的字段
            message.nickname = nickname
            message.content = content
            #使用save（）函数保存新的对象到数据库
            message.save()
            #修改完成跳转回留言板页面
            return redirect('message_board')

    #渲染模板，传入留言对象
    return render(request, 'polls/edit_message.html', {'message':message})